package corn

import (
	"context"
	"time"
	"yunj/app/service/client/logdbservice"
	"yunj/pkg/yunj/core/corn"
	"yunj/pkg/yunj/core/enum/cornenum"
)

// 日志数据表创建
// 实现TaskInterface接口
type clientLogTableCreate struct {
	corn.Task
}

var ClientLogTableCreate = func() *clientLogTableCreate {
	task := &clientLogTableCreate{}
	task.Task.InitTaskInstance(task)
	return task
}()

// 名称
func (t *clientLogTableCreate) Name() string {
	return "client.log.table.create"
}

// 描述
func (t *clientLogTableCreate) Desc() string {
	return "客户端日志表创建"
}

// 任务执行时间 - cron表达式
func (t *clientLogTableCreate) Spec() string {
	return "0 0 3 * * *" // 每晚3点执行
}

// 定义默认的处理状态（没有配置数据库状态时应用）
func (t *clientLogTableCreate) DefaultHandleStatus() uint8 {
	return cornenum.TASK_STATUS_RUNNING
}

// 超时时间
// 不设置，永久执行
func (t *clientLogTableCreate) Timeout() time.Duration {
	return 0
}

// 任务处理函数
func (t *clientLogTableCreate) Handler(ctx context.Context) (err error) {
	if ctx.Err() != nil {
		return
	}
	err = logdbservice.TablePrepare()
	return
}
